// 比较隐式绑定和new 绑定的优先级

function foo(something) {
    console.log(this);
    this.a = something // 此时this指向obj1,会向obj1添加a属性
}

var obj1 = {
    foo: foo
};

var obj2 = {};

obj1.foo(2); // 隐式调用 this 指向{ foo: [Function: foo] }
console.log(obj1.a); //2 


obj1.foo.call(obj2, 3); // 隐式调用+显示调用 == 显示调用, this指向的是obj2
console.log(obj2.a); //3

var bar = new obj1.foo(4);
console.log(obj1.a); //2 
console.log(bar.a); // 4